package io.mft.runtime.config;

import java.util.List;
import java.util.Properties;

import io.mft.api.domain.Api;
import io.mft.commons.config.datasource.DSConfig;
import io.mft.commons.config.mq.MqConfig;
import io.mft.dev.base.ApiThreadExecutorConfig;
import io.mft.dev.base.cache.RegionConfig;
import io.mft.runtime.config.impl.ApplicationConfigApiLoader;
import io.mft.runtime.config.impl.ApplicationConfigApiThreadExecutorLoader;
import io.mft.runtime.config.impl.ApplicationConfigCacheRegionLoader;
import io.mft.runtime.config.impl.ApplicationConfigLog4jLoader;
import io.mft.runtime.config.impl.ApplicationConfigMFTDatasourceLoader;
import io.mft.runtime.config.impl.ApplicationConfigMQLoader;

public class ConfigLoaderProvider {

	
	ConfigLoader<List<Api>> apiConfigLoader = new ApplicationConfigApiLoader();
	ConfigLoader<Properties> log4jConfigLoader = new ApplicationConfigLog4jLoader();
	ConfigLoader<DSConfig> datasourceConfigLoader = new ApplicationConfigMFTDatasourceLoader();
	ConfigLoader<List<ApiThreadExecutorConfig>> threadExecutorConfigLoader = new ApplicationConfigApiThreadExecutorLoader();
	ConfigLoader<List<MqConfig>> mqConfigLoader = new ApplicationConfigMQLoader();
	ConfigLoader<List<RegionConfig<?>>> cacheRegionConfigLoader=new ApplicationConfigCacheRegionLoader();
	public ConfigLoader<List<Api>> apiConfigLoader() {
		return apiConfigLoader;
	}

	public ConfigLoader<Properties> log4jConfigLoader() {
		return log4jConfigLoader;
	}

	public ConfigLoader<DSConfig> datasourceConfigLoader() {
		return datasourceConfigLoader;
	}

	public ConfigLoader<List<ApiThreadExecutorConfig>> apiThreadExecutorConfigLoader() {
		return threadExecutorConfigLoader;
	}

	public ConfigLoader<List<MqConfig>> mqConfigLoader() {
		return mqConfigLoader;
	}


	public ConfigLoader<List<RegionConfig<?>>> cacheRegionConfigLoader() {
		return cacheRegionConfigLoader;
	}

}
